package jm.nj.demo05mian.Demo04;

/*
 * 需求:定义方法传递成绩,计算成绩的平均数,如果成绩有负数,需要抛出异常,停止运算
 * */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {88, 45, 454, 154, 4, -20, 66};
        int avg = 0;
        try{

            avg = getAvg(arr);
        }catch (FenShuException e){
            System.out.println(e);
        }
        /*
         * 发现了问题,如果有负数,打印的结果是0
         * 用户会产生不确定性,不知道为什么是0
         * 所以如果有负数,应该让程序停止下来,让用户传递没有负数的成绩
         * 代码在继续执行
         */
        System.out.println("avg:" + avg);

    }

    private static int getAvg(int[] arr) throws FenShuException {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            //对传递的成绩进行判断如果成绩有负数,需要抛出异常,停止运算
            if (arr[i] < 0) {
                /*
                 * 方法内部抛出了编译异常
                 * 方法上必须声明
                 * 方法的调用者必须处理
                 */
                throw new FenShuException();
            }
            sum += arr[i];
        }
        //avg
        int avg = sum / arr.length;
        return avg;
    }
}
